Home > Overview payment-recovery card (recovered / retrying / written-off + trailing baseline)
Returns dunning-effectiveness numbers for the current month:
the total failed-payment amount, its recovered / retrying /
written-off breakdown, the won-back percentage, and a trailing-
6-month baseline. Recovery is computed from BillingEvent
transitions (failed later followed by succeeded on the same
subscription) — subscriptions.last_failed_at clears to NULL
on success, so subscription columns can’t be trusted.
Authorizations
Bearer token authentication. Requires a company-admin token
whose role holds reports.view. Additionally, the caller's
company must have ANALYTICS_DASHBOARD enabled — otherwise
every endpoint returns 404.
Query Parameters
ISO alpha-2 code of one of the requesting company's configured
countries (see GET /countries). When present, every service
on this endpoint filters its data to that country and reports
money in the country's own currency. Omit (or send "all")
for the aggregate-across-countries view, which is the default
and matches pre-Phase-004 behavior. Unknown ISO codes or ones
the company is not configured for return 400.
"US"
Response
Payment-recovery card payload
Dunning effectiveness for the current calendar month. Amounts
are attributed by the failing subscription's current price,
one entry per subscription per bucket. Recovery is derived
from BillingEvent transitions because
subscriptions.last_failed_at clears to NULL on success.
Decimal amount, expressed as a string to preserve arbitrary
precision across the wire. Parsed to Number on the client and
formatted with Intl.NumberFormat. Once the in-flight
money-cents-migration lands, this will switch to a
{ amount_cents: integer, currency: string } object.
"180.25"
x >= 0Decimal amount, expressed as a string to preserve arbitrary
precision across the wire. Parsed to Number on the client and
formatted with Intl.NumberFormat. Once the in-flight
money-cents-migration lands, this will switch to a
{ amount_cents: integer, currency: string } object.
"180.25"
x >= 0Decimal amount, expressed as a string to preserve arbitrary
precision across the wire. Parsed to Number on the client and
formatted with Intl.NumberFormat. Once the in-flight
money-cents-migration lands, this will switch to a
{ amount_cents: integer, currency: string } object.
"180.25"
x >= 0Decimal amount, expressed as a string to preserve arbitrary
precision across the wire. Parsed to Number on the client and
formatted with Intl.NumberFormat. Once the in-flight
money-cents-migration lands, this will switch to a
{ amount_cents: integer, currency: string } object.
"180.25"
x >= 0A percentage share, expressed as a decimal string rounded to
one decimal place. "100.0" when a single bucket accounts for
the full total; "0.0" when the divisor was zero.
"42.5"
A percentage share, expressed as a decimal string rounded to
one decimal place. "100.0" when a single bucket accounts for
the full total; "0.0" when the divisor was zero.
"42.5"
Up to two human-readable category labels describing the dominant failure reasons among the retrying subscriptions (e.g. "insufficient funds", "expired cards"). Empty when nothing is retrying or no reasons categorised.
2ISO 4217 three-letter code (uppercase).
3"USD"